C#_C#实现动态加载dll的方法,本文实例讲述了C#实现动态加
result = (T)pgmType.InvokeMember(methodName, defaultBinding, null, null, null, cultureInfo);
}
{
else
if (methisInfo.ReturnType == typeof(void))
setup.LoaderOptimization = LoaderOptimization.SingleDomain;
if (methisInfo.ReturnType == typeof(void))
}
///
catch (Exception e)
setup.ApplicationName = "ApplicationLoader";
pgmType.InvokeMember(methodName, defaultBinding, null, null, args, cultureInfo);
private Assembly assembly = null; result = (T)pgmType.InvokeMember(methodName, defaultBinding, null, null, null, cultureInfo);
}
public class AssemblyDynamicLoader<T>
try
T result = default(T);
/// <summary>
else
pgmType = this.assembly.GetType(fullClassName, true, true);
else
try
this.appDomain = AppDomain.CreateDomain("ApplicationLoaderDomain", null, setup);
result = (T)pgmType.InvokeMember(methodName, defaultBinding, null, null, args, cultureInfo);
复制代码 代码如下:
{}
pgmType.InvokeMember(methodName, defaultBinding, null, null, null, cultureInfo);
}
this.assembly = null;
{
{
using System.Reflection;
return result;
BindingFlags defaultBinding = BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.IgnoreCase | BindingFlags.InvokeMethod | BindingFlags.Static;
catch (Exception ee)
}
else
private AppDomain appDomain; else
MethodInfo methisInfo = assembly.GetType(fullClassName, true, true).GetMethod(methodName); }
else
namespace Alif.CommonAPI.DynamicLoadAssembly
}
{
{
{
try
{
Type pgmType = null;
}
{
catch (CannotUnloadAppDomainException ex)
}
}
setup.ConfigurationFile = AppDomain.CurrentDomain.BaseDirectory + assemblyConfigFilePath;
{
{ }
}
assemblyName = AppDomain.CurrentDomain.BaseDirectory + assemblyPath + assemblyName;
} result = (T)pgmType.InvokeMember(methodName, defaultBinding, null, pgmClass, null, cultureInfo);if (methisInfo.GetParameters().Length == 0)
String name = Assembly.GetExecutingAssembly().GetName().FullName;
{
}
public T InvokeMethod(string assemblyName, string assemblyPath, string assemblyConfigFilePath, string fullClassName, string methodName, params object[] args)
{
{
{
}
using System;
/// </summary>
object pgmClass = Activator.CreateInstance(pgmType);
if (assemblyConfigFilePath != string.Empty)
namespace Alif.CommonAPI.DynamicLoadAssembly
{
if (methisInfo.GetParameters().Length == 0)
复制代码 代码如下:
} pgmType.InvokeMember(methodName, defaultBinding, null, pgmClass, null, cultureInfo);}
{
}
using System.Reflection;
this.remoteLoader = (DynamicRemoteLoadAssembly<T>)this.appDomain.CreateInstanceAndUnwrap(name, typeof(DynamicRemoteLoadAssembly<T>).FullName);
result = (T)pgmType.InvokeMember(methodName, defaultBinding, null, pgmClass, args, cultureInfo);else
}
}
{
pgmType = Type.GetType(fullClassName, true, true);
}
setup.ShadowCopyFiles = "true";
{
}
{
{
public class DynamicRemoteLoadAssembly<T> : MarshalByRefObject
setup.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory + @"bin\";
//setup.PrivateBinPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "private");
setup.CachePath = setup.ApplicationBase;
} {
public T InvokeMethod(string assemblyPath, string fullClassName, string methodName, params object[] args)
this.assembly = Assembly.LoadFile(assemblyPath);
private DynamicRemoteLoadAssembly<T> remoteLoader;
return this.remoteLoader.InvokeMethod(assemblyName, fullClassName, methodName, args);
}
using System.IO;
using System;
{
if (this.assembly != null)
if (methisInfo == null)
}
using System.Text;
CultureInfo cultureInfo = new CultureInfo("es-ES", false);
AppDomainSetup setup = new AppDomainSetup();
}
using System.Globalization;
setup.ShadowCopyDirectories = setup.ApplicationBase;
}
pgmType.InvokeMember(methodName, defaultBinding, null, pgmClass, args, cultureInfo);
object pgmClass = Activator.CreateInstance(pgmType);
using System.Text;
using System.Collections.Generic;
{
{
}
{
this.appDomain = null;
return result;
{
if (methisInfo.ReturnType == typeof(void))
new Exception("EMethod does not exist!");
if (methisInfo.IsStatic)
{
{
if (methisInfo.ReturnType == typeof(void))
{
}
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/jiaob/c/7123.shtml
